//
//  CandidatsParser.cpp
//  Projet A2014
//
//  Created by Jules Thuillier on 03/11/2014.
//  Copyright (c) 2014 Jules Thuillier Erwan Marchand. All rights reserved.
//

#include "CandidatsParser.h"

#include <stdio.h>
#include <sstream>

CandidatsParser::CandidatsParser()
{
	emplacementFichier = "../../svn/Candidats.txt";
}

CandidatsParser::~CandidatsParser()
{
	FermerFlux();
}


/// Lit et renvois la liste des candidats
std::vector <std::string> CandidatsParser::ObtenirCandidats()
{
	if (candidats_.size() == 0)
	{
		// Ouvre le fichier
		while (!fichier.is_open()){
			OuvrirFlux();
		}

		std::string currentLine;

		// Parse
		while (std::getline(fichier, currentLine))
		{
			std::istringstream iss(currentLine);
			std::string candidat;

			while (std::getline(iss, candidat, ';'))
			{
				candidats_.push_back(candidat);
			}
		}

		// Ferme le fichier
		FermerFlux();

	}

	return candidats_;
}

void CandidatsParser::afficherCandidats()
{
	std::cout << "Liste des candidats : \n";
	int i = 1;
	for (std::vector<std::string>::iterator it = candidats_.begin(); it != candidats_.end(); ++it)
	{
		std::cout << "candidat " << i << " : " << *it << std::endl;
		i++;
	}
	std::cout << '\n';
}


/// Demande a l'utilisateur quel fichier ouvrir
std::string CandidatsParser::DemanderFichier()
{
	std::string filename;
	std::cout << "Entrez le chemin du fichier contenant les candidats : ";
	std::getline(std::cin, filename);
	// TODO : check filename ok ?
	return filename;
}


/// Ouvre le fichier en lecture
bool CandidatsParser::OuvrirFlux()
{
	fichier.open(emplacementFichier);
	if (fichier.is_open())
	{
		std::cout << "Fichier correctement ouvert " << std::endl;
		return true;
	}
	else
	{
		fichier.open(DemanderFichier());
		if (fichier.is_open())
		{
			std::cout << "Fichier correctement ouvert " << std::endl;
			return true;
		}
		return false;
	}
}

/// Ferme le fichier
void CandidatsParser::FermerFlux()
{
	if (fichier.is_open())
		fichier.close();
}